package com.pan.common.interview.throwable;


/**
 * 设计高效主流的异常框架
 * 1、设计一个通用的继承自RuntimeException的异常来统一处理
 * 2、其余异常都统一转为上述异常如APPException
 * 3、在catch后，抛出上述异常的子类，并提供足以定位的异常信息
 * 4、有前端接受APPException做统一处理
 *
 *
 * 效率：
 * java异常处理更加消耗性能
 *  1、try-catch块影响JVM优化
 *  2、异常对象实例需要保存栈快照等信息，开销比较大
 */

public class ExceptionPerformance {
    public static void testException(String[] array) {
        try {
            System.out.println(array[0]);
        } catch (NullPointerException e) {
            System.out.println("array cannot be null");
        }

    }
    public static void testIf(String[] array) {
        if (array != null){
            System.out.println(array[0]);
        } else {
            System.out.println("array cannot be null");
        }
    }

    public static void main(String[] args) {
        long start = System.nanoTime();
        testException(null);
        //testIf(null);
        System.out.println("cost " + (System.nanoTime()  - start));
    }

}
